<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>409. 最长回文串</title>
  </head>
  <body>
    <script>
      //     给定一个包含大写字母和小写字母的字符串 s ，返回 通过这些字母构造成的 最长的回文串 。

      // 在构造过程中，请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。

      //

      // 示例 1:

      // 输入:s = "abccccdd"
      // 输出:7
      // 解释:
      // 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
      // 示例 2:

      // 输入:s = "a"
      // 输入:1

      // 来源：力扣（LeetCode）
      // 链接：https://leetcode.cn/problems/longest-palindrome
      // 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
      /**
       * @param {string} s
       * @return {number}
       */
      var longestPalindrome = function (s) {
        let mapObj = new Map()
        for (let item of s) {
          if (mapObj.get(item)) {
            mapObj.set(item, mapObj.get(item) + 1)
          } else {
            mapObj.set(item, 1)
          }
        }
        let len = 0
        mapObj.forEach((val) => {
          if (val >= 2) {
            len += Math.floor(val / 2) * 2
          }
        })
        if (len < s.length) {
          len++
        }
        return len
      }
      console.log(longestPalindrome('abccccdd'))
    </script>
  </body>
</html>
